package com.young.mylib.db;

import com.alibaba.fastjson.JSONObject;

import java.util.Collection;
import java.util.List;

/**
 * Created by Young on 2018/3/29.
 */

public interface SqliteImpl {
    void replace(List<Object> list);
    void replace(Object obj);

    void save(Object obj); //保存数据

    void saveAll(Collection collection); //保存所有数据

    <T> List<T> queryAll(Class<T> table); //根据类名（表名）查找所有的数据

    <T> List<T> queryAll(Class<T> table, String order); //通过排序的方式查找所有的数据

    <T> List<T> queryAll(Class<T> table, String order, int limit); //通过排序和一页显示多少条数据来查询所有的数据

    <T> List<T> rawQuery(Class<T> table, String sql);//通过id查找对应的数据

    <T> T queryById(Class<T> table, Object id);//通过id查找对应的数据

    <T> List<T> queryByKey(Class<T> table, String key, String value);//通过key查找对应的数据

    <T> JSONObject queryOneByKey(Class<T> table, String key, String value);//通过key查找对应的数据

    <T> void updateByKey(Object obj, String key, String value);

    void clear(Class table); //清空对应表名中的所有数据

    void deleteTable(Object obj); //删除表中数据;

    void delete(Object obj); //删除表中数据;

    void deleteByKey(Class clz, String key, String value); //删除表中数据;

    void deleteAll(Collection collection); // 删除集合中所有的数据

    <T> void test(Class<T> table, String key, String value);
}
